/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.fatec.ppi.teste;

import br.fatec.ppi.modelo.Aluno;
import java.util.List;
import java.util.Scanner;
import javax.persistence.*;

/**
 *
 * @author Thiago
 */
public class MainQuery {
   
   public static void main(String [] args){
   Scanner in = new Scanner(System.in);
     
   EntityManagerFactory fabricaMotores = Persistence.createEntityManagerFactory("modelo");

   EntityManager motor = fabricaMotores.createEntityManager();
   EntityTransaction transacao= motor.getTransaction();
    
    
    
   //Variável útilizada para armazenar o valor de menu escolhido pelo usuário 
   int operacao;
   do{   
      System.out.println("1 - Para Iserir Aluno");
      System.out.println("2 - Para Listar Todos Alunos");
      System.out.println("3 - Para Listar por Nome");
      System.out.println("4 - Para Listar por parte do Nome");
      System.out.println("5 - Para Listar por Idade");
      System.out.println("6 - Para Listar por faixa de idade");
      System.out.println("0 - Para Sair");
      System.out.print("0pcao:");
      operacao = in.nextInt();
        
      switch(operacao){
            
            case 1:  transacao.begin();
                     Aluno aluno = new Aluno();
                
                     System.out.println("Insira o ID: ");
                     aluno.setId(in.nextInt());
                     System.out.println("Insira a Idade: ");  
                     aluno.setIdade(in.nextInt());
                     System.out.println("Insira o nome: ");  
                     aluno.setNome(in.next());
                     motor.persist(aluno);
                     transacao.commit(); 
                break;
                
            case 2:  Query pesquisa = motor.createQuery("select c from Aluno c ");
     
                     List<Aluno> listaAlunos = pesquisa.getResultList();
     
                     for(Aluno alunoTmp : listaAlunos){
                     System.out.println("Nome: "+alunoTmp.getNome());
                     }
                     break;  
                
            case 3:  System.out.println("Isira o nome que deseja encontrar: ");
                     String nome = in.next();
                
                     Query pesquisaNome = motor.createQuery("select c.nome from Aluno c where c.nome= '"+nome+"' ");
     
                     List<String> listaAlunosNome = pesquisaNome.getResultList();
     
                     for(String alunoTmp : listaAlunosNome){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 4:  System.out.println("Isira o nome ou parte do nome que deseja localizar: ");
                     nome= in.next();
                
                     Query pesquisaLike = motor.createQuery("select c.nome from Aluno c where c.nome like '%"+nome+"%' ");
     
                     List<String> listaAlunosLike = pesquisaLike.getResultList();
      
                     System.out.println("Resultado da Pesquisa: ");
                     for(String alunoTmp : listaAlunosLike){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 5:  System.out.println("Iserira a idade do aluno: ");
                     int idade= in.nextInt();
                
                     Query pesquisaIdade = motor.createQuery("select c.nome from Aluno c where c.idade='"+idade+"' ");
     
                     List<String> listaAlunosIdade = pesquisaIdade.getResultList();
      
                     System.out.println("Resultado da Pesquisa: ");
                     for(String alunoTmp : listaAlunosIdade){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 6:  System.out.println(" Isira a faixa de idade:");
                     System.out.print("De: "); 
                     int inicio =in.nextInt();
                     System.out.print("Até:  ");
                     int fim =in.nextInt();
                      
                
                     Query pesquisaPorIdade = motor.createQuery("select c.nome from Aluno c where c.idade between'"+inicio+"' and '"+fim+"'");
     
                     List<String> listaAlunosPorIdade = pesquisaPorIdade.getResultList();
      
                     System.out.println("Resultado da Pesquisa da faixa: ");
                     for(String alunoTmp : listaAlunosPorIdade){
                     System.out.println("Nome: "+alunoTmp);
                     }
                     break;  
                
            case 0:break;
                
             
        }
        

    }while(operacao != 0);
    
    
    
 }
}


